package queue

/*
当前路径下执行
go doc Queue
go doc Push

可以显示该文件中 成员(Queue)/方法(Push) 的文档

本地开启一个可以通过http访问的 go doc 文档(待验证)
godoc -http :6060
*/

// Queue 通过别名方式扩展已有类型
type Queue []interface{}

// Push 将一个元素压入队列中
func (q *Queue) Push(v interface{}) {
	*q = append(*q, v)
}

// Pop 从队列头部弹出一个元素
func (q *Queue) Pop() interface{} {
	head := (*q)[0]
	*q = (*q)[1:]
	//强制类型转换, .(int)转换成 int 类型
	//digit := head.(int)
	return head
}

// IsEmpty 判断队列是否为空
func (q *Queue) IsEmpty() bool {
	return len(*q) == 0
}
